home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / mui / mui36dev.lha / MUI / Developer / ExtClasses / MCC_Tron / Source / tronp.c < prev   
Encoding:
C/C++ Source or Header  |  1996-08-13  |  7.7 KB  |  320 lines

  1. /*
  2.  
  3.         Tron.mcc (c) Copyright 1995-96 by kmel, Klaus Melchior
  4.  
  5.         Registered MUI class, Serial Number: 0002
  6.  
  7.         tronp.c
  8.  
  9. */
  10.  
  11.  
  12.  
  13.  
  14. /* SMAKE */
  15.  
  16. /*** includes ***/
  17.  
  18.  
  19. #ifdef __KMEL
  20.     #include <kmel/kmel.h>
  21.     #include <kmel/kmel_debug.h>
  22.  
  23.     #include <mui/tron_mcc.h>
  24. #else
  25.     #include <clib/alib_protos.h>
  26.     #include <clib/graphics_protos.h>
  27.     #include <clib/utility_protos.h>
  28.     #include <clib/muimaster_protos.h>
  29.     #include <pragmas/muimaster_pragmas.h>
  30.     #include <libraries/mui.h>
  31.  
  32.     #if MUIMASTER_VLATEST <= 14
  33.         #include "mui/mui33_mcc.h"
  34.     #endif
  35.  
  36.     #include "mui/tron_mcc_private.h"
  37.  
  38.     #define DB / ## /
  39. #endif
  40.  
  41. #define D / ## /
  42.  
  43.  
  44. #define CLASS       MUIC_TronP
  45. #define SUPERCLASSP MUIC_Mccprefs
  46.  
  47. struct DataP
  48. {
  49.     Object *gr_prefs;
  50.     Object *tr_sample;
  51.     Object *pp_player1, *pp_background, *pp_player2, *sl_speed;
  52. };
  53.  
  54. #include "rev/Tron.mcp.rev"
  55.  
  56. #define UserLibID "$VER: " __VERS " (" __DATE ") " __VERSCR
  57. #define VERSION __VERSION
  58. #define REVISION __REVISION
  59. #define MASTERVERSION 14
  60.  
  61. #include "mui/mccheader.c"
  62.  
  63.  
  64. ULONG ASM _NewP(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
  65. {
  66.     struct DataP *data;
  67.  
  68.     if(!(obj = (Object *)DoSuperMethodA(cl, obj, msg)))
  69.         return(0);
  70.  
  71.     DB("_NewP\n");
  72.  
  73.     /*** init data ***/
  74.     data = INST_DATA(cl,obj);
  75.  
  76.     /*** make group ***/
  77.     data->gr_prefs = VGroup,
  78.  
  79.         Child, MUI_MakeObject(MUIO_BarTitle, "Sample"),
  80.         Child, data->tr_sample = TronObject,
  81.             VirtualFrame,
  82.             MUIA_ShortHelp, "The Tron object sample,\nreacts on preferences below.",
  83.             End,
  84.  
  85.         Child, VSpace(8),
  86.  
  87.         Child, MUI_MakeObject(MUIO_BarTitle, "Preferences"),
  88.         Child, VGroup,
  89.  
  90.             Child, HGroup,
  91.                 Child, FreeKeyLabel("Player 1", '1'),
  92.                 Child, data->pp_player1 = MUI_NewObject(MUIC_Poppen,
  93.                     MUIA_Window_Title, "Adjust Pen for Player 1",
  94.                     MUIA_ControlChar, '1',
  95.                     MUIA_Draggable, TRUE,
  96.                     MUIA_ShortHelp, "Color of Player 1.",
  97.                     End,
  98.  
  99.                 Child, HSpace(8),
  100.  
  101.                 Child, FreeKeyLabel("Background", 'b'),
  102.                 Child, data->pp_background = MUI_NewObject(MUIC_Poppen,
  103.                     MUIA_Window_Title, "Adjust Pen for Background",
  104.                     MUIA_ControlChar, 'b',
  105.                     MUIA_Draggable, TRUE,
  106.                     MUIA_ShortHelp, "Color of Background.",
  107.                     End,
  108.  
  109.                 Child, HSpace(8),
  110.  
  111.                 Child, FreeKeyLabel("Player 2", '2'),
  112.                 Child, data->pp_player2 = MUI_NewObject(MUIC_Poppen,
  113.                     MUIA_Window_Title, "Adjust Pen for Player 2",
  114.                     MUIA_ControlChar, '2',
  115.                     MUIA_Draggable, TRUE,
  116.                     MUIA_ShortHelp, "Color of Player 2.",
  117.                     End,
  118.                 End,
  119.  
  120.             Child, HGroup,
  121.                 Child, FreeKeyLabel("Speed", 's'),
  122.                 Child, VGroup,
  123.                     Child, VSpace(0),
  124.                     Child, data->sl_speed = KeySlider(4, 20, 0, 's'),
  125.                     Child, VSpace(0),
  126.                     MUIA_ShortHelp, "Speed of the game.",
  127.                     End,
  128.                 End,
  129.  
  130.             Child, TextObject,
  131.                 TextFrame,
  132.                 MUIA_Background, MUII_TextBack,
  133.                 MUIA_FixHeightTxt, "\n",
  134.                 MUIA_Text_Contents, MUIX_C __VSTRING "\n" __VERSCR,
  135.                 End,
  136.  
  137.             End,
  138.  
  139.         End;
  140.  
  141.     if(!data->gr_prefs)
  142.     {
  143.         CoerceMethod(cl, obj, OM_DISPOSE);
  144.         return(0);
  145.     }
  146.  
  147.     DoMethod(obj, OM_ADDMEMBER, data->gr_prefs);
  148.  
  149.  
  150.     /*** Colors ***/
  151.     DoMethod(data->pp_player1, MUIM_Notify, MUIA_Pendisplay_Spec, MUIV_EveryTime,
  152.         data->tr_sample, 3,
  153.         MUIM_Set, MUIA_Tron_PenSpec1, MUIV_TriggerValue);
  154.     DoMethod(data->pp_player2, MUIM_Notify, MUIA_Pendisplay_Spec, MUIV_EveryTime,
  155.         data->tr_sample, 3,
  156.         MUIM_Set, MUIA_Tron_PenSpec2, MUIV_TriggerValue);
  157.     DoMethod(data->pp_background, MUIM_Notify, MUIA_Pendisplay_Spec, MUIV_EveryTime,
  158.         data->tr_sample, 3,
  159.         MUIM_Set, MUIA_Tron_PenSpecB, MUIV_TriggerValue);
  160.  
  161.     /*** Speed ***/
  162.     DoMethod(data->sl_speed, MUIM_Notify, MUIA_Slider_Level, MUIV_EveryTime,
  163.         data->tr_sample, 3,
  164.         MUIM_Set, MUIA_Tron_Speed, MUIV_TriggerValue);
  165.  
  166.     return((ULONG)obj);
  167. }
  168.  
  169.  
  170. ULONG ASM _DisposeP(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
  171. {
  172.     return(DoSuperMethodA(cl,obj,msg));
  173. }
  174.  
  175.  
  176. ULONG ASM _SetupP(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) struct MUIP_Setup *msg)
  177. {
  178.     struct DataP *data = INST_DATA(cl, obj);
  179.     ULONG d;
  180.  
  181.     if(!(DoSuperMethodA(cl,obj,(Msg)msg)))
  182.         return(FALSE);
  183.  
  184.     DB("SetupP\n");
  185.  
  186.     /*** Colors ***/
  187.     get(data->pp_player1, MUIA_Pendisplay_Spec, &d);
  188.     set(data->pp_player1, MUIA_Pendisplay_Spec, d);
  189.     get(data->pp_player2, MUIA_Pendisplay_Spec, &d);
  190.     set(data->pp_player2, MUIA_Pendisplay_Spec, d);
  191.     get(data->pp_background, MUIA_Pendisplay_Spec, &d);
  192.     set(data->pp_background, MUIA_Pendisplay_Spec, d);
  193.  
  194.     /*** Speed ***/
  195.     get(data->sl_speed, MUIA_Slider_Level, &d);
  196.     set(data->sl_speed, MUIA_Slider_Level, d);
  197.  
  198.     return(TRUE);
  199. }
  200.  
  201.  
  202. ULONG ASM _CleanupP(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) struct MUIP_Setup *msg)
  203. {
  204. //    struct DataP *data = INST_DATA(cl, obj);
  205.  
  206.     if(!(DoSuperMethodA(cl,obj,(Msg)msg)))
  207.         return(FALSE);
  208.  
  209.     DB("CleanupP\n");
  210.  
  211.     return(TRUE);
  212. }
  213.  
  214.  
  215. ULONG ASM _ConfigToGadgets(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) struct MUIP_Settingsgroup_ConfigToGadgets *msg)
  216. {
  217.     struct DataP *data = INST_DATA(cl, obj);
  218.     ULONG d;
  219.  
  220.     DB("ConfigToGadgets\n");
  221.  
  222.     /*** set colors ***/
  223.     if(d = DoMethod(msg->configdata, MUIM_Dataspace_Find, MUICFG_Tron_Pen1))
  224.     {
  225.         DB("Color1: '%s'\n", (char *)d);
  226.         set(data->pp_player1, MUIA_Pendisplay_Spec, d);
  227.     }
  228.     else
  229.         set(data->pp_player1, MUIA_Pendisplay_Spec, DEFAULT_PEN1);
  230.     if(d = DoMethod(msg->configdata, MUIM_Dataspace_Find, MUICFG_Tron_Pen2))
  231.     {
  232.         DB("Color2: '%s'\n", (char *)d);
  233.         set(data->pp_player2, MUIA_Pendisplay_Spec, d);
  234.     }
  235.     else
  236.         set(data->pp_player2, MUIA_Pendisplay_Spec, DEFAULT_PEN2);
  237.     if(d = DoMethod(msg->configdata, MUIM_Dataspace_Find, MUICFG_Tron_PenB))
  238.     {
  239.         DB("ColorB: '%s'\n", (char *)d);
  240.         set(data->pp_background, MUIA_Pendisplay_Spec, d);
  241.     }
  242.     else
  243.         set(data->pp_background, MUIA_Pendisplay_Spec, DEFAULT_PENB);
  244.  
  245.     /*** set speed ***/
  246.     if(d = DoMethod(msg->configdata, MUIM_Dataspace_Find, MUICFG_Tron_Speed))
  247.         set(data->sl_speed, MUIA_Slider_Level, *(ULONG *)d);
  248.     else
  249.         set(data->sl_speed, MUIA_Slider_Level, DEFAULT_SPEED);
  250.  
  251.     return(0);
  252. }
  253.  
  254.  
  255. ULONG ASM _GadgetsToConfig(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) struct MUIP_Settingsgroup_GadgetsToConfig *msg)
  256. {
  257.     struct DataP *data = INST_DATA(cl, obj);
  258.     ULONG d;
  259.  
  260.     DB("GadgetsToConfig\n");
  261.  
  262.     /*** Colors ***/
  263.     get(data->pp_player1, MUIA_Pendisplay_Spec, &d);
  264.     if(d)
  265.         DoMethod(msg->configdata, MUIM_Dataspace_Add, d, sizeof(struct MUI_PenSpec), MUICFG_Tron_Pen1);
  266.     DB("Color1: '%s'\n", (char *)d);
  267.     get(data->pp_player2, MUIA_Pendisplay_Spec, &d);
  268.     if(d)
  269.         DoMethod(msg->configdata, MUIM_Dataspace_Add, d, sizeof(struct MUI_PenSpec), MUICFG_Tron_Pen2);
  270.     DB("Color2: '%s'\n", (char *)d);
  271.     get(data->pp_background, MUIA_Pendisplay_Spec, &d);
  272.     if(d)
  273.         DoMethod(msg->configdata, MUIM_Dataspace_Add, d, sizeof(struct MUI_PenSpec), MUICFG_Tron_PenB);
  274.     DB("ColorB: '%s'\n", (char *)d);
  275.  
  276.     /*** Speed ***/
  277.     get(data->sl_speed, MUIA_Slider_Level, &d);
  278.     DoMethod(msg->configdata, MUIM_Dataspace_Add, &d, 4, MUICFG_Tron_Speed);
  279.     DB("Speed: %ld\n", d);
  280.  
  281.     return(0);
  282. }
  283.  
  284.  
  285. ULONG ASM _HandleInputP(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) struct MUIP_HandleInput *msg)
  286. {
  287. //    struct DataP *data = INST_DATA(cl, obj);
  288.  
  289.     if(msg->imsg)
  290.     {
  291.         switch(msg->imsg->Class)
  292.         {
  293.             case IDCMP_INTUITICKS:
  294.             {
  295.             }
  296.             break;
  297.         }
  298.     }
  299.  
  300.     return(DoSuperMethodA(cl,obj,(Msg)msg));
  301. }
  302.  
  303. ULONG ASM SAVEDS _DispatcherP(REG(a0) struct IClass *cl, REG(a2) Object *obj, REG(a1) Msg msg)
  304. {
  305.     switch(msg->MethodID)
  306.     {
  307.         case OM_NEW                       : return(_NewP           (cl,obj,(APTR)msg));
  308.         case OM_DISPOSE                   : return(_DisposeP       (cl,obj,(APTR)msg));
  309.         case MUIM_Setup                   : return(_SetupP         (cl,obj,(APTR)msg));
  310.         case MUIM_Cleanup                 : return(_CleanupP       (cl,obj,(APTR)msg));
  311.  
  312.         case MUIM_Settingsgroup_ConfigToGadgets: return(_ConfigToGadgets(cl,obj,(APTR)msg));
  313.         case MUIM_Settingsgroup_GadgetsToConfig: return(_GadgetsToConfig(cl,obj,(APTR)msg));
  314.  
  315.         case MUIM_HandleInput             : return(_HandleInputP   (cl,obj,(APTR)msg));
  316.     }
  317.  
  318.     return(DoSuperMethodA(cl,obj,msg));
  319. }
  320.